package cn.vinann.demo.repository.akweb;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import cn.vinann.demo.domain.akweb.ItbUser;
import cn.vinann.demo.dto.UserDto;

/**
 * Spring Data Jpa 常用多属性查询
 * 
 * And --- 等价于 SQL 中的 and 关键字，比如 findByUsernameAndPassword(String user, Striang pwd)；
 * Or --- 等价于 SQL 中的 or 关键字，比如 findByUsernameOrAddress(String user, String addr)；
 * Between --- 等价于 SQL 中的 between 关键字，比如 findBySalaryBetween(int max, int min)；
 * LessThan --- 等价于 SQL 中的 "<"，比如 findBySalaryLessThan(int max)；
 * GreaterThan --- 等价于 SQL 中的">"，比如 findBySalaryGreaterThan(int min)；
 * IsNull --- 等价于 SQL 中的 "is null"，比如 findByUsernameIsNull()；
 * IsNotNull --- 等价于 SQL 中的 "is not null"，比如 findByUsernameIsNotNull()；
 * NotNull --- 与 IsNotNull 等价；
 * Like --- 等价于 SQL 中的 "like"，比如 findByUsernameLike(String user)；
 * NotLike --- 等价于 SQL 中的 "not like"，比如 findByUsernameNotLike(String user)；
 * OrderBy --- 等价于 SQL 中的 "order by"，比如 findByUsernameOrderBySalaryAsc(String user)；
 * Not --- 等价于 SQL 中的 "！ ="，比如 findByUsernameNot(String user)；
 * In --- 等价于 SQL 中的 "in"，比如 findByUsernameIn(Collection<String> userList) ，方法的参数可以是 Collection 类型，也可以是数组或者不定长参数；
 * NotIn --- 等价于 SQL 中的 "not in"，比如 findByUsernameNotIn(Collection<String> userList) ，方法的参数可以是 Collection 类型，也可以是数组或者不定长参数；
 * 
 * @author wn
 *
 */

public interface ItbUserRepository extends JpaRepository<ItbUser, Long>{
	
	 @Query("select new cn.vinann.demo.dto.UserDto(count(u),realName) from ItbUser u group by u.realName") 
	 List<UserDto> findCountGroupByName();
	 
	 ItbUser findByMobile(String mobile);
}
